﻿using HalconDotNet;
using MvCamCtrl.NET;
using MvCamCtrl.NET.CameraParams;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CCSFPCLoaderUI.Services
{
    public delegate void ActionRef1<T1, T2>(T1 arg1, ref T2 arg2, T1 arg3);
    interface IHIKCameraService
    {
        ActionRef1<IntPtr, MyCamera.MV_FRAME_OUT_INFO_EX> ImageCallbackFunc { get; set; }
        ConcurrentQueue<HObject> ImageQueue { get; set; }
        bool m_bIsDeviceOpen { get; set; }
        uint PayloadSize { get; set; }
        bool OpenCamera(string cameraIP);
        void CloseCamera();
        bool StartGrabe();
        bool StopGrabe();
        bool SetTriggerMode(uint triggerMode);
        bool SetExposureTime(float time);
        bool SetFrameRate(float rate);
        Int32 ConvertToRGB(IntPtr pSrc, ushort nHeight, ushort nWidth, MyCamera.MvGvspPixelType nPixelType, IntPtr pDst);
    }
}
